package cn.bye.lyu.boot.server.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
public class DataConfig {
	
	public final static Logger LOG = LoggerFactory.getLogger(DataConfig.class);
	
	@Autowired
	private Environment env;
	
	/**
	 * 配置数据源（基于alibaba的Druid数据源）
	 * 
	 *@return
	 *@author luliangwei
	 *
	 */
	@Bean
	public DruidDataSource dataSource(){
		LOG.info("================> 配置数据源（基于Druid数据源）",DruidDataSource.class.getName());
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setUrl(env.getProperty("jdbc.mysql.url"));
		dataSource.setUsername(env.getProperty("jdbc.mysql.username"));
		dataSource.setPassword(env.getProperty("jdbc.mysql.password"));
		dataSource.setDriverClassName(env.getProperty("jdbc.mysql.driver-class-name"));
		
		dataSource.setInitialSize(2);//初始化建立物理连接个数
		dataSource.setMaxActive(20);//最大连接池数量
		dataSource.setMinIdle(0);//最小连接池数量
		dataSource.setMaxWait(60000);//获取连接时最大等待时间，单位毫秒。
		dataSource.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql
		dataSource.setTestOnBorrow(false);//申请连接时执行validationQuery检测连接是否有效
		dataSource.setTestWhileIdle(true);//建议配置为true，不影响性能，并且保证安全性。
		dataSource.setPoolPreparedStatements(false);//是否缓存preparedStatement，也就是PSCache
		return dataSource;
	}
}
